
package laberinto;

import interfaces.IObjetoComible;
import interfaces.IObservable;
import interfaces.IObservador;
import interfaces.IPacman;

import java.util.ArrayList;

import utilidades.Vector;

public class Bolon implements IObjetoComible,IObservable{
	protected Casilla casilla;
	private ArrayList<IObservador> observadores = new ArrayList<IObservador>();
	private boolean comido;
	
	public Bolon(Casilla casilla){
		this.comido = false;
		this.casilla = casilla;
	}
	
	@Override
	public void interactuarCon(IPacman pacman) {
		notificarCambios();
		pacman.sacarContenidoDeCasilla(this);
		comido = true;
		pacman.incrementarPuntaje(5);
	}

	@Override
	public String converitEnString() {
		return "Bolon";
	}

	@Override
	public void agregar(IObservador observador) {
		observadores.add(observador);
	}

	@Override
	public void eliminar(IObservador observador) {
		observadores.remove(observador);
	}

	@Override
	public void agregar(ArrayList<IObservador> observadores) {
		this.observadores.addAll(observadores);
	}

	@Override
	public void agregarObservador(IObservador observadores) {
		this.observadores.add(observadores);
	}	
	
	@Override
	public void notificarCambios() {
		for (IObservador observador : observadores) {
			observador.actualizar();
		}
	}

	public boolean fueComido(){
		return comido;
	}
	
	public Vector obtenerPosicion() {
		return casilla.obtenerPosicion();
	}
}
